//package com.sky.utils;
//
//
//import com.sky.entity.SysRole;
//import com.sky.properties.JwtProperties;
//import io.jsonwebtoken.*;
//import org.springframework.security.core.userdetails.UserDetails;
//
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
//
//public class JwtTokenUtils {
//    private static String SECRET = "itcast";
//    /**
//     * 过期时间
//     */
//    public static final long EXPIRATION = 1000 * 24 * 60 * 60 * 7;
//    public static String createToken(String username) {
//        Map<String, Object> claims = new HashMap<>(1);
//        claims.put("role", new ArrayList<SysRole>());
//        return Jwts.builder().signWith(SignatureAlgorithm.HS256, SECRET)
//                .setSubject(username)
//                .addClaims(claims)
//                .setIssuedAt(new Date())
//                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION))
//                .compact();
//    }
//
//    public static String getUsernameFromToken(String token) {
//        String username;
//        try {
//            username = getTokenBody(token).getSubject();
//        } catch (Exception e) {
//            username = null;
//        }
//        return username;
//    }
//
//    private static Claims getTokenBody(String token) {
//        Claims claims = null;
//        try {
//            claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody();
//        } catch (ExpiredJwtException | MalformedJwtException | UnsupportedJwtException | SignatureException | IllegalArgumentException e) {
//            e.printStackTrace();
//        }
//        return claims;
//    }
//
//    public static boolean isExpiration(String token) {
//        try{
//            return getTokenBody(token).getExpiration().before(new Date());
//        } catch(Exception e){
//            System.out.println(e.getMessage());
//        }
//        return true;
//    }
//
//    public static boolean validateToken(String token, UserDetails userDetails) {
//        //SysUser sysUser = (SysUser) userDetails;
//        String username = getUsernameFromToken(token);
//        return username.equals(userDetails.getUsername()) && !isExpiration(token);
//    }
//}
